#include<bits/stdc++.h>
using namespace std;
const int N=2e4+10,M=2e5+10;
int n,m,rt,hd[N],to[M],nx[M],t;
void add(int u,int v){
	t++; to[t]=v; nx[t]=hd[u]; hd[u]=t;
}
int d[N],mn[N],c; bool p[N];
void dfs(int u){
	d[u]=mn[u]=++c; int s=0;
	for(int e=hd[u];e;e=nx[e]){
		int v=to[e];
		if(!d[v]){
			dfs(v); s++;
			if(mn[v]>=d[u] && u!=rt) p[u]=1;
			mn[u]=min(mn[u],mn[v]);
		}
		else mn[u]=min(mn[u],d[v]);
	}
	if(u==rt && s>1) p[u]=1;
}
int main()
{
	//freopen("4.in","r",stdin);
	cin>>n>>m;
	for(int x,y,i=1;i<=m;i++) 
		scanf("%d %d",&x,&y),add(x,y),add(y,x);
	for(int i=1;i<=n;i++) if(!d[i]) rt=i,dfs(i); 
	int ans=0;
	for(int i=1;i<=n;i++) if(p[i]) ans++;
	cout<<ans<<endl;
	for(int i=1;i<=n;i++) if(p[i]) printf("%d ",i);
	return 0;
}
